% Possibilité de définir +ieurs sous-sections

% debut d'une diapo
\begin{frame}
\frametitle{Ensemble Système}
	\begin{block}{Besoins}
                \begin{itemize}
                        \item Interface de système de fichier API compatible POSIX
                        \item Interface clé-valeur (à travers une Socket) en mode
                        transactionnel
                        \\--> Respet propriétés ACID: Atomique, Cohérente, Isolée et Durable
                        \item Snapshot
                \end{itemize}
        \end{block}
\end{frame}

\subsection{KVDB}
% debut d'une diapo
\begin{frame}%[shrink]
\frametitle{KVDB}
        \textbf{Key-Value Data Base}
        \begin{itemize}
                \item SGDB transactionnel basé sur les VT-Tree.
                \item Performe Entrées/Sorties envers Ext4 sous-jacent
        \end{itemize}
        \vspace{4mm}
        \begin{columns}[T]
	        \begin{column}{.5\textwidth}
                        \begin{center}
		                \includegraphics[width=1\textwidth]{images/kvdb.png}
	                \end{center}
                \end{column}
	        \begin{column}{.5\textwidth}
                        \begin{block}{Le schéma}
                                \begin{itemize}
                                        \item Peut être constitué de plusieurs dictionnaires
                                        (ensembles clé-valeur).
                                        \item Chaque dictionnaire est contruit sur un VT-Tree
	                        \end{itemize}
                        \end{block}
                \end{column}
        \end{columns}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Snapshots}
        \begin{block}{Utilité}
                Sauvegarde incrémentale tout en gardant la base de donnée en ligne
        \end{block}
        \vspace{7mm}
        \begin{columns}[T]
	        \begin{column}{.5\textwidth}
                \begin{exampleblock}{Création d'un snapshot}
                        \begin{enumerate}
                                \item Marquage en lecture seule
                                \item Création nouveau schéma vierge
                                \item Enregistrement de dépendance à l'ancien schéma
                        \end{enumerate}
                \end{exampleblock}
                \end{column}
                \begin{column}{.5\textwidth}
                        \vskip7pt
                        \textbf{Utilisation:}
                        \begin{itemize}
                                \item Historique
                                \item Transactions
                        \end{itemize}
                \end{column}
        \end{columns}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Snapshots}
        \begin{center}
		\includegraphics[width=1\textwidth]{images/snapshot1.png}
	\end{center}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Snapshots}
        \begin{center}
		\includegraphics[width=1\textwidth]{images/snapshot2.png}
	\end{center}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Snapshots}
        \begin{center}
		\includegraphics[width=1\textwidth]{images/snapshot3.png}
	\end{center}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Transactions}
        \begin{block}{Propriétés}
                \begin{itemize}
                        \item Opération en 2 phases: txn-begin $+$ txn-commit ou txn-abort (Atomicité)
                        \item Utilise schéma privé vierge
                        \item Isolation, deux modes:
                        \begin{itemize}
                                \item Snapshot isolation (SI)
                                \item Sérialisabilité (SER) -> Lock
                        \end{itemize}
                        \item Non limité par taille RAM
                \end{itemize}
        \end{block}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Transactions: Snapshot Isolation}
        \begin{center}
		\includegraphics[width=1\textwidth]{images/transaction_si1.png}
	\end{center}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Transactions: Snapshot Isolation}
        \begin{center}
		\includegraphics[width=1\textwidth]{images/transaction_si2.png}
	\end{center}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Transactions: Serializability}
        \begin{center}
		\includegraphics[width=1\textwidth]{images/transaction_ser1.png}
	\end{center}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Transactions: Serializability}
        \begin{center}
		\includegraphics[width=1\textwidth]{images/transaction_ser2.png}
	\end{center}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Transactions: Serializability}
        \begin{center}
		\includegraphics[width=1\textwidth]{images/transaction_ser3.png}
	\end{center}
\end{frame}

% Transactions
 %ACID 2 modes.

\subsection{KVFS}

% debut d'une diapo
\begin{frame}
\frametitle{KVFS}
        \textbf{Key-Value File System}
	\begin{itemize}
                        \item Utilise KVDB avec schema à trois dictionnaires
                        \item Utilise FUSE (API POSIX)
                        \item Daemon en mode utilisateur
	\end{itemize}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Système avec KVFS}
        \begin{center}
		\includegraphics[width=1\textheight]{images/kvfs.png}
	\end{center}
\end{frame}

% debut d'une diapo
\begin{frame}
\frametitle{Schéma KVDB}
        \begin{block}{fs-schema}
                \begin{itemize}
                        \item nmap:\\
                        Entrées Name space\\
                        \textbf{<\{\color{red}parent-inode\#, path-component\color{black}\}, \color{green}
                        inode\#\color{black}>}
                        \item imap:\\
                        Attributs inode\\
                        \textbf{<\color{red}inode\#, \color{green}inode attributes\color{black}>}
                        \item dmap:\\
                        Blocs de données des fichiers\\
                        \textbf{<\{\color{red}inode\#, offset\color{black}\}, \color{green}
                        data-block\color{black}>}
                \end{itemize}
        \end{block}
        Méta-donnée externe stockée dans dictionnaire supplémentaire
\end{frame}


